]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
dbusServices/extensions: Fix shutdown after showing prefs
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 28 Oct 2021 17:27:57 +0000 (19:27 +0200)
committerMarge Bot <marge-bot@gnome.org>
Sat, 30 Oct 2021 21:50:47 +0000 (21:50 +0000)
GTK4 relies entirely on refcounting for cleanup (that is,
there is no longer a destroy() method that forces a dispose
run regardless of the refcount).

Unfortunately that makes cleanup harder in (some) language
bindings, where an object may be kept alive implicitly by
closures etc.

Address this by releasing the hold count when the window
is closed rather than when it is destroyed.

This isn't the most elegant, but it ensure that the service
doesn't get stuck if an extension doesn't carefully clean
up everything in its prefs widget.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4564

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2013>

js/dbusServices/extensions/extensionsService.js

index 6556d3cf3112725d2646a7e581ce7985044bfd28..7fa32fe80888f45d4e0f394138ba068b95edcf66 100644 (file)
@@ -133,7 +133,10 @@ var ExtensionsService = class extends ServiceImplementation {
             if (options.modal)
                 window.modal = options.modal.get_boolean();
 
-            window.connect('destroy', () => this.release());
+            window.connect('close-request', () => {
+                this.release();
+                return false;
+            });
             this.hold();
 
             window.show();